package com.wlq.demo.uitls;

import cn.hutool.core.util.StrUtil;
import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.DocumentFormat;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

import java.io.*;
import java.net.ConnectException;

/**
 * @author csb
 * @description: TODO
 * @date 2023/11/20 17:07
 */
public class OpenofficeUtil {

    public static int converter(String sourceFile, String destFile, String type) throws FileNotFoundException, ConnectException {
        File inputFile = new File(sourceFile);

        // 如果目标路径不存在, 则新建该路径
        File outputFile = new File(destFile);
        if (!outputFile.getParentFile().exists()) {
            outputFile.getParentFile().mkdirs();
        }
        // 文件输入输出流
        FileInputStream in = null;
        FileOutputStream out = null;
        in = new FileInputStream(inputFile);
        out = new FileOutputStream(outputFile);

        // 创建连接
        OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);

        //OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
        connection.connect();

        // 创建转换器
        DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
        // 文件格式
        DefaultDocumentFormatRegistry factory = new DefaultDocumentFormatRegistry();


        // 待转换文件名称及扩展名称
        String officeName = inputFile.getName();
        String officeExt = officeName.substring(officeName.lastIndexOf(".") + 1);
        // 待转换文件 转换文件格式对象

        DocumentFormat officeFormat = factory.getFormatByFileExtension(officeExt);
        DocumentFormat pdfFormat = factory.getFormatByFileExtension(type);

        // 记录转换时间 咨询转换
        long startTime = System.currentTimeMillis();
        converter.convert(in, officeFormat, out, pdfFormat);
        long endTime = System.currentTimeMillis();

        //断开连接
        connection.disconnect();

        return 1;
    }

//    public static int office2PDF(String sourceFile, String destFile) {
//        if(StrUtil.isEmpty(sourceFile) || StrUtil.isEmpty(destFile) ){
//            return -1;
//        }
//
//        try {
//            File inputFile = new File(sourceFile);
//            if (!inputFile.exists()) {
//                return -1;// 找不到源文件, 则返回-1
//            }
//            // 如果目标路径不存在, 则新建该路径
//            File outputFile = new File(destFile);
//            if (!outputFile.getParentFile().exists()) {
//                outputFile.getParentFile().mkdirs();
//            }
//            // 文件输入输出流
//            FileInputStream in = null;
//            FileOutputStream out = null;
//            in = new FileInputStream(inputFile);
//            out = new FileOutputStream(outputFile);
//
//            if(in == null){
//                return -1;
//            }
//            if(out == null){
//                return -1;
//            }
//            // 创建连接
//            OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
//
//            //OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
//            connection.connect();
//
//            // 创建转换器
//            DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
//            // 文件格式
//            DefaultDocumentFormatRegistry factory = new DefaultDocumentFormatRegistry();
//
//
//            // 待转换文件名称及扩展名称
//            String officeName = inputFile.getName();
//            String officeExt = officeName.substring(officeName.lastIndexOf(".") + 1);
//            // 待转换文件 转换文件格式对象
//
//            DocumentFormat officeFormat = factory.getFormatByFileExtension(officeExt);
//            DocumentFormat pdfFormat = factory.getFormatByFileExtension("pdf");
//
//            // 记录转换时间 咨询转换
//            long startTime = System.currentTimeMillis();
//            converter.convert(in, officeFormat, out, pdfFormat);
////            converter.convert(in, out);
//            long endTime = System.currentTimeMillis();
//
//            //断开连接
//            connection.disconnect();
//            return 0;
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//            return -1;
//        } catch (IOException e) {
//            e.printStackTrace();
//
//            return -1;
//        } catch (Exception e){
//            e.printStackTrace();
//            return -1;
//        }
////        return 1;
//    }

}
